[Linux] shell数值计算的几种方式 您所在的位置:网站首页 shell 运算 除 取整 [Linux] shell数值计算的几种方式

[Linux] shell数值计算的几种方式

2024-06-02 18:27| 来源: 网络整理| 查看: 265

shell数值计算相关命令:bc、expr、let

let、expr无法进行浮点运算;bc、awk可以进行浮点运算,bc的除法是地板除,awk的除法是精确的。

bc、expr可直接显示计算结果;let丢弃计算结果,可传递结果到变量。

数字和运算符之间有无空格,expr->必须有空格,let->不能有空格,bc->有无空格均可

1)expr@数字和运算符之间要有空格 [root@xxx ~]# expr 200+1 200+1 [root@xxx ~]# expr 200/1 200/1

@加减乘除,注意乘法"\*" [root@xxx ~]# expr 200 + 1 201 [root@xxx ~]# expr 200 - 1 199 [root@xxx ~]# expr 200 * 2 expr: syntax error [root@xxx ~]# expr 200 \* 2 400 [root@xxx ~]# expr 200 / 2 100 [root@xxx ~]# expr 200 + 2 \* 2 204

@运算数得是整数 [root@xxx ~]# expr 20.0 + 2 \* 2 expr: non-integer argument

2)bc@加减乘除 [root@xxx ~]# echo 30+1 | bc 31 [root@xxx ~]# echo 30-1 | bc 29 [root@xxx ~]# echo 30*2 | bc 60 [root@xxx ~]# echo 30/2 | bc 15

@可以进行浮点运算

[root@xxx ~]# echo 30.2+1 | bc 31.2

@除法是地板除 [root@xxx ~]# echo 30.2/2+1 | bc 16 [root@xxx ~]#

3)let@数字和运算符之间不能有空格 [root@xxx ~]# let i=40 + 3 -bash: let: +: syntax error: operand expected (error token is "+") [root@xxx ~]# let i= 40+3 -bash: let: i=: syntax error: operand expected (error token is "=")

@加减乘除 [root@xxx bin]# let i=40+3 [root@xxx bin]# echo $i 43 [root@xxx bin]# let i=40-3 [root@xxx bin]# echo $i 37 [root@xxx bin]# let i=40*3 [root@xxx bin]# echo $i 120 [root@xxx bin]# let i=40/3 [root@xxx bin]# echo $i 13

@运算数得是整数 [root@xxx bin]# let i=40.3/3 -bash: let: i=40.3/3: syntax error: invalid arithmetic operator (error token is ".3/3") [root@xxx bin]#

4)awk [root@xxx ~]# i=20 [root@xxx ~]# [root@xxx ~]# i=$(echo "$i 6" | awk '{print $1+$2;}') [root@xxx ~]# [root@xxx ~]# echo $i 26 [root@xxx ~]# i=$(echo "$i 6" | awk '{print $1+$2}') [root@xxx ~]# echo $i 32 [root@xxx ~]# i=$(echo "$i 6.6" | awk '{print $1+$2}') [root@xxx ~]# echo $i 38.6 [root@xxx ~]#

5)shell脚本中,给变量赋值可以使用反引号或者$()test.sh内容如下,

echo "initial value for i is 1." echo "case1" i=1 echo $i+1

echo "case2-1" i=1i=`expr $i+1` echo $i

echo "case2-2" i=1i=$(expr $i+1) echo $i

echo "case3-1" i=1 i=`expr $i + 1` echo $i

echo "case3-2" i=1 i=$(expr $i + 1) echo $i

echo "case4" i=1((i=$i+1)) echo $i

echo "case5" i=1((i++)) echo $i

echo "case6" i=1 let i=i+1 echo $i

echo "case7" i=1 let i++ echo $i

echo "case8" i=1 i=$[i+1] echo $i

执行结果如下, [root@xxx ~]# ./test.sh initial value for i is 1. case1 1+1 case2-1 1+1 case2-2 1+1 case3-1 2 case3-2 2 case4 2 case5 2 case6 2 case7 2 case8 2

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有